<html>
<head>
<title>p4est: Parallel Adaptive Mesh Refinement
on Forests of Octrees</title>
<meta name="author" content="Carsten Burstedde">
<link type="text/css" rel="stylesheet" href="p4est.css">
<!-- mathjax !-->
<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
</head>
<body>

<h2><tt>p4est</tt>: Parallel AMR on Forests of Octrees</h2>

<p>
The <tt>p4est</tt> software library enables the dynamic management of
a collection of adaptive octrees, conveniently called a forest of
octrees.  <tt>p4est</tt> is designed to work in parallel and scales to
hundreds of thousands of processor cores.  It is free software released
under GNU General Public Licence version 2, or (at your option) any
later version.
</p>

<div class="citation">
<h3>Source code</h3>
<p class="text">
Please see the <a href="http://github.com/cburstedde/p4est">github repository</a>
of <tt>p4est</tt> or download the
<a href="http://p4est.github.io/release/p4est-2.2.tar.gz">latest release tarball</a>.
The source comes with commented example programs and test cases.
You can also download
<a href="https://github.com/p4est/p4est.github.io/tree/master/release/">older
stable releases</a>.
Please note that the so-called releases auto-generated by github do
<em>not</em> work (they are lacking the subdirectory sc and
some generated files).
</p>
</div>

&nbsp;

<div class="citation">
<h3>Binary packages</h3>
<p class="text">
Contributed packages of <tt>p4est</tt> are available for <a
href="http://www.gentoo.org/">Gentoo Linux</a> (these are also available on the
<a href="http://www.dealii.org/download.html">deal.ii download page</a>) and
the <a href="http://brew.sh/">Homebrew distribution</a>.
</p>
</div>

&nbsp;

<div class="citation">
<h3>Autogenerated API documentation</h3>
<p class="text">
This is the <a href="http://p4est.github.io/api/index.html">doxygen output</a> for <tt>p4est</tt>.
You can recreate it with <tt>make doxygen</tt> after calling <tt>configure</tt>.
</p>
</div>

&nbsp;

<div class="citation">
<h3>Howto document and step-by-step examples</h3>
<p class="text">
This as a <a href="http://p4est.github.io/p4est-howto.pdf">howto document</a> that documents the basic
interface design of <tt>p4est</tt> and comments on the
<a href="http://github.com/cburstedde/p4est/tree/master/example/steps/">
step-by-step examples</a> included in the source code.
</p>
</div>

&nbsp;

<div class="citation">
<h3>Questions / Get involved</h3>
<p class="text">
We appreciate comments, bug reports, and suggestions for adding features.
To this end, we recommend using the
<a href="https://github.com/cburstedde/p4est/issues">issue tracker</a>.
We will also consider
<a href="https://github.com/cburstedde/p4est/pulls">pull requests</a>.
For further questions, please email us at
<a href="mailto:info@p4est.org">info@p4est.org</a>.
</p>

&nbsp;

<p class="text">
We had previously used a now-defunct mailing list that is
<a href="http://librelist.com/browser/p4est/">archived</a>.
<!-- see <a href="http://librelist.com/">librelist.com</a> for details. -->
<!-- Your first message will auto-subscribe you and provide instructions to proceed. -->
<!-- (it may be necessary to resend your initial mail). -->
</p>
</div>

&nbsp;

<div class="citation">
<h3>Technical papers / Citations</h3>
<!--
<p class="text">
The original technical paper on <tt>p4est</tt> is
<a href="http://p4est.github.io/papers/BursteddeWilcoxGhattas11.pdf">paper1 available as pdf</a> [1a].
We have recently submitted a second technical paper to cover additional
API functions;
<a href="http://arxiv.org/abs/1406.0089">see here for paper2</a> [1b].
Recently, the 2:1 balance algorithm has been rewritten; see
<a href="http://p4est.github.io/papers/IsaacBursteddeGhattas12.pdf"
>this article</a> [1c] on the new logic.
</p>
//-->

<p>
If you use <tt>p4est</tt> for your publications, please cite it as follows [1a].
The reference [1b] is for people specifically using the topology iterator, the
high-order node numbering, or the top-down search.
[1c] is for people interested in the 2:1 balance details, the strong scaling
limit and/or memory footprint.
</p>
<p class="cite">
[1a]
Carsten Burstedde, Lucas C. Wilcox, and Omar Ghattas,<br>
<em>p4est: Scalable Algorithms for Parallel Adaptive Mesh Refinement on
Forests of Octrees.</em><br>
Published in SIAM Journal on Scientific Computing 33 no. 3 (2011),
pages 1103-1133
(<a href="http://p4est.github.io/papers/BursteddeWilcoxGhattas11.pdf">download</a>).
</p>

<pre class="bibtex">
@ARTICLE{BursteddeWilcoxGhattas11,
  author = {Carsten Burstedde and Lucas C. Wilcox and Omar Ghattas},
  title = {{\texttt{p4est}}: Scalable Algorithms for Parallel Adaptive Mesh
           Refinement on Forests of Octrees},
  journal = {SIAM Journal on Scientific Computing},
  volume = {33},
  number = {3},
  pages = {1103-1133},
  year = {2011},
  doi = {10.1137/100791634}
}
</pre>

&nbsp;

<p class="cite">
[1b]
Tobin Isaac, Carsten Burstedde, Lucas C. Wilcox, and Omar Ghattas,<br>
<em>Recursive algorithms for distributed forests of octrees.</em><br>
Published in SIAM Journal on Scientific Computing 37 no. 5 (2015),
pages C497-C531
(<a href="http://p4est.github.io/papers/IsaacBursteddeWilcoxEtAl15.pdf">download</a>).
</p>

<pre class="bibtex">
@ARTICLE{IsaacBursteddeWilcoxEtAl15,
  author = {Tobin Isaac and Carsten Burstedde and Lucas C. Wilcox and Omar Ghattas},
  title = {Recursive algorithms for distributed forests of octrees},
  journal = {SIAM Journal on Scientific Computing},
  volume = {37},
  number = {5},
  pages = {C497--C531},
  year = {2015},
  doi = {10.1137/140970963}
}
</pre>

&nbsp;

<p class="cite">
[1c]
Tobin Isaac, Carsten Burstedde, and Omar Ghattas,<br>
<em>Low-Cost Parallel Algorithms for 2:1 Octree Balance.</em><br>
Published in Proceedings of the 26th IEEE International Parallel &amp;
Distributed Processing Symposium, 2012
(<a href="http://p4est.github.io/papers/IsaacBursteddeGhattas12.pdf">download</a>).
<br>
<em>Errata:</em>
In Algorithm 7, line 3 reads
\(\text{for all}\ o\in R\ \text{do}\);
it should read
\(\text{for all}\ o\in R\cup R^{\text{new}}\ \text{do}\).
</p>
</div>

<p>
<tt>p4est</tt> uses <tt>libsc</tt> written by the same authors and others
for basic helper functionality such as logging, array and
hash data structures, parallel statistics, and more.  <tt>libsc</tt>
also integrates the third-party libraries <tt>zlib</tt> and
<tt>lua</tt>.  <tt>libsc</tt> is
free software under LGPL v2.1 (or later) and hosted under
<a href="https://github.com/cburstedde/libsc">github</a> as well.
</p>

<div class="faq">
<!-- This license FAQ is included by popular demand. -->
<table class="faq" border="1" width="100%">
<tr><td>May I copy and modify <tt>p4est</tt> source code for internal use?</td>
<td>yes</td></tr>
<tr><td>Will my source that contains copied or modified <tt>p4est</tt> code
automatically be GPL?</td>
<td>yes</td></tr>
<tr><td>Will my source that includes <tt>p4est</tt> header files
and is supposed to be linked against <tt>p4est</tt> automatically be GPL?</td>
<td>no</td></tr>
<tr><td>May I distribute my source that includes <tt>p4est</tt> header files
and is supposed to be linked against <tt>p4est</tt>?</td>
<td>yes</td></tr>
<tr><td>May I distribute a binary executable that links against <tt>p4est</tt>
if I distribute my source code along with it?</td>
<td>yes</td></tr>
<tr><td>May I distribute a binary executable that links against <tt>p4est</tt>
without distributing my source code along with it?</td>
<td>no, but:</td></tr>
<tr><td>May I contact <a href="http://www.otc.utexas.edu/">UT Austin OTC</a>
to negotiate permission to distribute a binary executable without the source?</td>
<td>yes</td></tr>
</table>
</div>

<p>
The <a href="http://www.forestclaw.org/">ForestClaw</a> project is an
ongoing collaboration with
<a href="http://math.boisestate.edu/~calhoun/www_personal">Donna Calhoun</a>
to solve hyperpolic PDEs.
</p>

<p>
The generic adaptive finite element software <a
href="http://www.dealii.org/">deal.II</a> now interfaces to
<tt>p4est</tt> to obtain distributed mesh information [2].  The corresponding
algorithms are described in this <a
href="http://p4est.github.io/papers/BangerthBursteddeHeisterEtAl11.pdf"
>article</a>.  If you use <tt>deal.II</tt> with <tt>p4est</tt> for your
publications, please cite it as:
</p>

<div class="citation">
<p class="cite">
[2]
Wolfgang Bangerth, Carsten Burstedde, Timo Heister, and Martin
Kronbichler,<br>
<em>Algorithms and Data Structures for Massively Parallel Generic
Adaptive Finite Element Codes.</em><br>
Published in ACM Transactions on Mathematical Software 38 No. 2 (2011),
pages 14:1-14:28
(<a href="http://p4est.github.io/papers/BangerthBursteddeHeisterEtAl11.pdf">download</a>).
</p>

<pre class="bibtex">
@ARTICLE{BangerthBursteddeHeisterEtAl11,
  author = {Wolfgang Bangerth and Carsten Burstedde and Timo Heister and Martin
	Kronbichler},
  title = {Algorithms and Data Structures for Massively Parallel Generic Adaptive
	Finite Element Codes},
  journal = {ACM Transactions on Mathematical Software},
  volume = {38},
  number = {2},
  pages = {14:1-14:28},
  year = {2011}
}
</pre>
</div>

<p>
The <tt>p4est</tt> library is now used to implement AMR in <a
  href="http://www.mcs.anl.gov/petsc/">PETSc</a>, the Portable Extensible
Toolkit for Scientific Computation. The interface and design decisions are
described in this <a href="https://arxiv.org/abs/1508.02470">article</a>.  If
you use the <tt>p4est</tt> backend for <tt>PETSc</tt> for your publications,
please cite it as:
</p>

<div class="citation">
<p class="cite">
[3]
Tobin Isaac, Matthew G. Knepley,<br>
<em>Support for Non-conformal Meshes in PETSc's DMPlex Interface</em><br>
(<a href="https://arxiv.org/pdf/1508.02470">download</a>).
</p>

<pre class="bibtex">
@ARTICLE{IsaacKnepley15,
  author = {Tobin Isaac and Matthew G. Knepley},
  title = {Support for Non-conformal Meshes in {PETSc}'s {DMPlex} Interface},
  journal = {ACM Transactions on Mathematical Software},
  eprinttype = {arxiv},
  eprint = {1508.02470},
  url = {http://arxiv.org/abs/1508.02470}
}
</pre>
</div>

<p>
The <tt>p4est</tt> authors:<br>
<a href="http://burstedde.ins.uni-bonn.de/">Carsten Burstedde</a><br>
<a href="http://lucaswilcox.com/">Lucas C. Wilcox</a><br>
<a href="http://www.cse.gatech.edu/people/12734/tobin-isaacs/">Tobin
Isaac</a><br>
Thanks to our contributors!  Please see the
<a href="http://github.com/cburstedde/p4est/tree/master/AUTHORS">AUTHORS</a>
file for details.
</p>

<div class="citation">
The development of <tt>p4est</tt> was partially supported by the US National
Science Foundation (NSF Grants No. CCF-0427985, CMMI-1028889, CNS-0540372,
CNS-0619838, DMS-0724746, OCI-0749334, OPP-0941678) and the US Department of
Energy (DOE Grants No. 06ER25782, 08ER25860, SC0002710).
The authors thank the Texas
Advanced Computing Center (TACC) for providing them with access to the Ranger
supercomputer under NSF TeraGrid award MCA04N026, and the National Center for
Computational Science (NCCS) for early-user access to the Jaguar Cray XT5
supercomputer.  Any opinions, findings and conclusions or recomendations
expressed on this web page or in the source code and documentation are those of
the authors and do not necessarily reflect the views of the National Science
Foundation (NSF).
</div>

</body>
</html>
